package com.mef.smsplat.web.controller.sys;

import java.util.List;

import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.hc24.util.StringUtil;
import com.mef.smsplat.dao.base.DataGridModel;
import com.mef.smsplat.dao.base.Page;
import com.mef.smsplat.domain.SmsOpraInfoDomain;
import com.mef.smsplat.domain.SysAdminInfoDomain;
import com.mef.smsplat.domain.TemplateInfoDomain;
import com.mef.smsplat.service.SmsHistoryInfoService;
import com.mef.smsplat.service.TemplateInfoService;
import com.mef.smsplat.service.vo.PassengerVo;
import com.mef.smsplat.util.Constants;
import com.mef.smsplat.web.controller.base.Json;
import com.mef.smsplat.web.controller.qo.TemplateQo;

@Controller
@RequestMapping("/sys/etdzsms/")
public class EtdzSmsController {

	private SmsHistoryInfoService smsHistoryInfoService;
	private TemplateInfoService templateInfoService;

	public void setSmsHistoryInfoService(
			SmsHistoryInfoService smsHistoryInfoService) {
		this.smsHistoryInfoService = smsHistoryInfoService;
	}

	public void setTemplateInfoService(TemplateInfoService templateInfoService) {
		this.templateInfoService = templateInfoService;
	}

	/**
	 * 根据PNR提取旅客信息
	 * 
	 * @param pnr
	 *            PNR编码
	 * @return
	 */
	@RequestMapping("rtPass.sys")
	public ModelAndView rtPass(String pnr) {
		List<PassengerVo> list = smsHistoryInfoService.rtPass(pnr);
		
		TemplateQo qo=new TemplateQo();
		qo.setTemplateType(Constants.TEMP_TYPE_ETDZ);
		qo.setStatus(Constants.NOMARL);
		DataGridModel dgm=new DataGridModel();
		dgm.setRows(50);//50够大了，不会超过50个模版。。。
		Page<TemplateInfoDomain> page=templateInfoService.query(qo, dgm);
		ModelAndView av = new ModelAndView();
		av.setViewName("page/sys/etdzsms/send_sms");
		av.addObject("passList", list);
		av.addObject("tempList", page.getRows());
		return av;
	}
	
	/**
	 * 根据票号提取旅客信息
	 * @param tktNo 票号
	 * @return
	 */
	@RequestMapping("detrPass.sys")
	public ModelAndView detrPass(String tktNo) {
		List<PassengerVo> list = smsHistoryInfoService.detrPass(tktNo);
		
		TemplateQo qo=new TemplateQo();
		qo.setTemplateType(Constants.TEMP_TYPE_ETDZ);
		qo.setStatus(Constants.NOMARL);
		DataGridModel dgm=new DataGridModel();
		dgm.setRows(50);//50够大了，不会超过50个模版。。。
		Page<TemplateInfoDomain> page=templateInfoService.query(qo, dgm);
		ModelAndView av = new ModelAndView();
		av.setViewName("page/sys/etdzsms/send_sms");
		av.addObject("passList", list);
		av.addObject("tempList", page.getRows());
		return av;
	}

	/**
	 * 发送短信
	 * 
	 * @return
	 */
	@ResponseBody
	@RequestMapping("sendSms.sys")
	public Json sendSms(HttpSession session, String templateId, String[] passIds,String smsContent) {
		// 从Session中取得当前登录用户信息，当前是管理员
		SysAdminInfoDomain sys = (SysAdminInfoDomain) session
				.getAttribute(Constants.SESSION_SYS_ADMIN);
		SmsOpraInfoDomain smsOpra = new SmsOpraInfoDomain();
		if (sys != null) {
			smsOpra.setOpraId(sys.getSysAdminId());
			smsOpra.setOpraName(sys.getAdminName());
			smsOpra.setOpraPersonType(Constants.USER_TYPE_SYS);
		}

		// 其实这里还会做一些操作的
		if(smsContent!=null&&!"".equals(smsContent)){
			smsContent=StringUtil.ajax(smsContent);
		}
		smsHistoryInfoService.sendSms(templateId,smsContent, passIds, smsOpra);
		return new Json();
	}
	
	/**
	 * 模版预览
	 * @param templateId
	 * @param passId
	 * @return
	 */
	@ResponseBody
	@RequestMapping("previewTemp.sys")
	public Json previewTemplate(String templateId,String passId){
		String smsContent = smsHistoryInfoService.priviewTemplate(templateId, passId);
		Json json=new Json();
		json.setData(smsContent);
		return json;
	}
}
